package cn.dmp.tags

import org.apache.spark.sql.Row


// 4
/**
  * 关键字打标：
  * （标签格式：Kxxx->1）xxx 为关键字，关键字个数不能少于 3 个字符，且不能 超过 8 个字符；
  * 关键字中如包含‘‘|’’，则分割成数组，转化成多个关键字标签
  *
  */
object Tags4_KeyWords extends Tags {
  /**
    * 打标签的方法定义。参数是可变的，返回一个Map[String, Int]类型的
    *
    * @param args
    * @return
    */
  override def makeTags(args: Any*): Map[String, Int] = {

    var map: Map[String, Int] = Map[String, Int]()
    val row: Row = args(0).asInstanceOf[Row]
    val stopWords: Map[String, Int] = args(1).asInstanceOf[Map[String, Int]]

    //得到关键字
    val kws: String = row.getAs[String]("Keywords")
    kws.split("\\|").map(kw => kw.trim)
      .filter(kw => kw.length>=3 && kw.length<=8 && !stopWords.contains(kw))
      .foreach(kw => {
        map += (("K"+kw, 1))
      })

    map
  }
}
